iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 19
0
Software Development

從零開始的Python練成記系列 第 19

[Day 19]資料結構:比Dictionary(目錄)架構更像二維陣列

  • 分享至 

  • xImage
  •  

約莫在九天前,我才有Post一篇文章,那時候的輸出樣貌並沒有很符合自己的預期,就是因為它並不是像表格一樣的對位並顯示每一個資料所屬的欄位,先附上連結讓大家可以跟拿來跟今天的文章進行比較:
[Day 10]一次堆放多筆資料的陣列還可以這樣用?!


今天,我們就針對原本的存放方式進行優化,讓程式的輸出格式更有表格的樣子,那就必須提到這個Python的模組:pandas,只不過這個模組都必須要額外安裝才能使用 (而我因為是用PyCharm by JetBrain,就可以透過系統內建的下載輔助來把這兩個套件直接導入到原系統)
在直接將這個方法直接套用到現有的程式之前,畢竟它是模組,所以就會需要先做導入:

import pandas
#其實可以在後面加上 "as pd" 這類的方式來讓接下來的操作更加輕鬆

pandas其實是一種資料架構的轉換模組,可以讓資料依照在Dictionary架構位置的不同,輸出近似於表格的架構,就來看看下方的程式碼:

import pandas as pd
tester_pd = pd.DataFrame([[1, 18],
                         [29, 43, 55]])
print(tester_pd)
"""
輸出結果如下:
    0   1     2 >>>會自動產生欄與列,預設是以編號的方式呈現,且會隨字串長度改變欄位大小
0   1  18   NaN >>>針對沒有資料的區塊,會以 NaN來表示沒有資料存放
1  29  43  55.0
"""

那麼,就正式進到重頭戲:改寫前面的資料存放方式,並印出結構清晰的表格吧!
話說,今天的資料架構其實不用使用到numpy餒

serial_num = ["nac149ac", "nac149xc", "mes177hc", "mes177hxc"]
graphic_card = ["NVMX130", "NVMX150", "NVGTX1070", "NVGTX1080"]
actual_effect = ["NB", "NB", "BES", "AES"]
price = [18900, 21950, 37990, 45900]
#一樣先在下方建立Dictionary架構的陣列
laptop_pd = {"Serials": serial_num,
             "Graphic Cards": graphic_card,
             "Performance": actual_effect,
             "Price(with tax)": price}
print(pd.DataFrame(laptop_pd))
#透過將其以pd.DataFrame的架構進行輸出,讓其依據目錄名稱產生類似表格的架構
"""
輸出結果如下:
     Serials Graphic Cards Performance  Price(with tax)
0   nac149ac       NVMX130          NB            18900
1   nac149xc       NVMX150          NB            21950
2   mes177hc     NVGTX1070         BES            37990
3  mes177hxc     NVGTX1080         AES            45900
"""

看了真是賞心悅目


上一篇
[Day 18]物件導向一定要會的功能:繼承
下一篇
[Day 20]遞迴式計算的小實驗:N階乘法
系列文
從零開始的Python練成記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言